1. Field of the Invention
The present invention relates to a method, system, and program for performing program specific operations during the uninstallation of a program from a computer system.
2. Description of the Related Art
An installer program is a software program that enables a programmer to write specific code to install a given application program onto the drives of a computer in a way that enables the given application program to work correctly with the computer""s environment, including its operating system. There are several types of installers Java installers and operating system specific installers, e.g., Microsoft Windows installers, and International Business Machines (xe2x80x9cIBMxe2x80x9d) OS/2 and AIX operating system installers, etc. Many of the install programs existing today have various limitations in their functionality as discussed below.
One type of Java installer is provided by a software company known as InstallShield. Currently, the functionality and configurability of this Java installer is somewhat limited. For example, the Java installer provides default panels, but the text cannot be changed or configured. Also, this Java installer is not easy to customize. In other words, a programmer cannot easily add a function that is not provided by the installer program. In addition, the current Java installer provides only limited registry support. A registry is a central repository for all possible information for the computer such as hardware configurations and software settings, etc. The registry maintains information on installed components. A programmer or user can access the registry to determine information about installed products, based upon what the user/programmer placed into the registry or what information is useful to the user. Presently, the Java installer only works with a Microsoft Windows"" registry; and the support provided with Microsoft Windows is limited. For example, the current Java installer does not enable the Windows"" system registry to be updated directly. Instead, the keys to update in the registry are in a file which must be imported into the registry through a system call. It would be desirable if such a Java installer program supported multiple directories, splash screens (which are images that come up while a software product is being installed), and multiple languages instead of only English. Furthermore, it would be desirable for a given installer program to be more broadly applicable to other environments and operating systems. Although InstallShields"" Java installer is tailored to Java, it is also geared somewhat for the Windows"" operating system as discussed above in terms of the Windows"" registry support provided. However, it does not provide specific support for other operating systems such as the IBM OS/2 and AIX operating systems.
Another Java installer is called xe2x80x9cInstall Anywherexe2x80x9d from ZeroG. This Java installer program also has a default panel that is not configurable, e.g., the order in which panels appear is not customizable. Likewise, registry support is limited. A user/programmer updates a registry from a file using a xe2x80x9creg_editxe2x80x9d command. Although this installer program enables a user/programmer to add a few items into the registry, the registry cannot be queried. In addition, other registry functional features are not available. Likewise, there is no multiple directory support, and no national language support. Also, it does not support multiple operating systems, i.e., there is no OS/2 or AIX specific support.
Another approach would be to provide install APIs for Java. However, this approach is not yet available.
With respect to operating system specific installers, InstallShield provides a Microsoft Windows"" 32 installer, e.g., Microsoft Windows 95/98 and NT. Although this installer program is widely used throughout the industry, it is based upon a proprietary scripting language developed by InstallShield. The scripting language is similar to Basic programming language. Programmers, who generally have experience and knowledge of object oriented programs such as C++ and Java, must learn this proprietary InstallShield script, which is not related to the popular computer languages, in order to program an Install program. This unfamiliarity with the proprietary InstallShield scripting language complicates the installer programming process.
One hindrance to developing a cross platform uninstaller is that certain uninstall operations may need to be performed that are not performed by the general uninstaller. Further, problems may arise in developing a cross platform uninstaller that works across operating systems that support long file names and those that do not, such as 8.3 file systems. There is thus a need in the art to provide uninstaller programs to allow cross-platform uninstallations.
To overcome the limitations in the prior art described above, preferred embodiments disclose a system, method, and program for uninstalling an installed program comprised of installed components installed from file sets. A call is made to a first uninstall program to uninstall the installed program. The first uninstall program is in a first directory. A call is then made to a class loader to load a second uninstall program. The second uninstall program is maintained in a second directory. The first uninstall program processes the file sets to determine installed components to remove, and deletes the installed components. A call is made from the first uninstall program to the second uninstall program to perform uninstall operations.
In further embodiments, the first uninstall program is a general uninstall program that applies across programs to uninstall. The second uninstall program includes code to perform uninstall operations specific to the program being uninstalled.
In still further embodiments, the second uninstall program is stored with a file name compatible with different file systems. In such case, the calling of the class loader comprises assigning a variable to the second uninstall program. The first uninstall program uses the variable to call a method in the second uninstall program to perform uninstall operations. In yet further embodiments, the second uninstall program is stored with a file name compatible with FAT16 file systems and the first uninstall program is saved with a long file name.
The second uninstall program may be called before the first uninstall program deletes the installed components, after all the installed components for the program are deleted or at other instances during the uninstallation process.
Preferred embodiments provide a class or program for performing program specific uninstallation operations not performed by the generic uninstaller that removes installed components indicated in the file sets used to install the program. The generic uninstaller can operate across platforms. The program specific uninstall program is loaded to allow the generic uninstaller to access the program specific uninstall operations. Further, to provide cross-platform operability with file systems that only support short file names, i.e., 8.3 file systems, the preferred embodiments name the program specific uninstall program using the 8.3 naming convention in order to allow the uninstall program of preferred embodiments to operate on operating systems that do not support long file names.